#include<cstdio>
#include<algorithm>
#define rep(i,l,r) for (ll i=(l); i<=(r); i++)
typedef long long ll;
using namespace std;

const int N=100010;
int n;
ll a[N],b[N];

ll gcd(ll a,ll b){ return b ? gcd(b,a%b) : a; }

ll mul(ll a,ll b,ll mod){
	ll res=0;
	for (; b; a=(a+a)%mod,b>>=1)
		if (b & 1) res=(res+a)%mod;
	return res;
}

void exgcd(ll a,ll b,ll &x,ll &y){
    if (!b){ x=1; y=0; return; }
    exgcd(b,a%b,y,x); y-=(a/b)*x;
}

ll inv(ll a,ll b){ ll x,y; exgcd(a,b,x,y); x=(x%b+b)%b; return x; }

void merge(ll c1,ll c2,ll m1,ll m2,ll &c3,ll &m3){
    ll d=gcd(m1,m2); m3=m1/d*m2;
    if (c2<c1) swap(c1,c2),swap(m1,m2);
    if ((c2-c1)%d) { puts("No solution"); exit(0); }
    c3=(mul(mul(inv(m1/d,m2/d),(c2-c1)/d,m2/d),m1,m3)+c1)%m3;
}

int main(){
    scanf("%d",&n);
    rep(i,1,n) scanf("%lld%lld",&a[i],&b[i]);
    rep(i,2,n) merge(b[i-1],b[i],a[i-1],a[i],b[i],a[i]);
    printf("%lld\n",b[n]);
    return 0;
}